---
slug: rust入门篇02
title: ⚙️Rust入门篇02-复合类型
authors: [ZXK]
tags: [Rust, 学习笔记, 变量, 复合类型]
---

import Pill from "@site/src/components/Pill";

<!-- truncate -->

## <Pill textW="800" brd="5px">1、Tuple(元组)</Pill>

#### - Tuple 可以将多个类型的多个值放在一个类型里

#### - Tuple 的长度时固定的:一旦声明就无法改变

### <Pill textW="800" brd="5px">Tuple 的创建语法</Pill>

- 在小括号里,将值用逗号分开
- Tuple 中的每个位置都对应一个类型,Tuple 中各元素的类型不必相同

:::info 语法:

```rust
let 元组名 mut可选: (元组元素的类型 可忽略) = (元组元素);
```

:::

- 可以利用模式解构的方法来获取相应的值给各各变量

```rust

let tup:(i32,f64,bool)=(50,3.6,true);
let (a,b,c)=tup;
println!("{},{},{}",a,b,c);
```

- 使用.标记法来访问元组里的元素

```rust
let tup:(i32,f64,bool)=(50,3.6,true);
println!("{},{},{}",tup.0,tup.1,tup.2);
```

---

## <Pill textW="800" brd="5px">2、Array(数组)</Pill>

#### - 数组也可以将多个值放在一个类型里

#### - 但是数组中的每个元素的类型必须相同

#### - 数组的长度也是固定的

### <Pill textW="800" brd="5px">Array 的创建语法</Pill>

- 在中括号(或者叫方括号)里,个值用逗号分开
- Tuple 中的每个位置都对应一个类型,Tuple 中各元素的类型不必相同

:::info 语法:

```rust
let 数组名 = [数组元素];
```

:::

### 数组的用处

- 如果想让你的数据存放在 stack(栈)上而不是 heap(堆)上,或者想保证有固定数量的元素,这时可以使用数组更有好处
- 数组没有 Vector(矢量)灵活.
  - Vector 和数组类似,它由标准库提供
  - Vector 的长度可以发生改变
  - 如果你不确定应该使用数组还是 Vector,那么估计你应该用 Vector.

### 数组的基本声明方法

- 数组的类型以这种形式表示:[类型;长度]

```rust
let arr:[i32;5]=[1,2,3,4,5];
```

### 另一种声明数组的方法

#### 如果数组的每个元素值都相同,那么可以在:

- 在中括号里指定初始值
- 然后是一个";"号
- 最后是数组的长度

#### 例如:

<Pill textW="800" brd="10px">
  let a = [3;5];
</Pill>

#### 相当于:

<Pill textW="800" brd="10px">
  let a = [3,3,3,3,3];
</Pill>

### 如何访问数组的元素(暂不适用循环进行访问)

- 数组是 Stack 上分配的单个块的内存
  - 可以使用索引来访问数组中的元素

```rust
let arr[i32,3]=[15,64,50];
println!("{},{},{}",arr[0],arr[1],arr[2]);
```
